<?php
/*
===============================================================================
    Controla las funciones nesesarias para que el catalogo de Usuarios pueda
    consultar, insertar , modificar y eliminar registros.
===============================================================================
 */
class Usuarios extends CI_Controller
{
    const TITULO = 'Usuarios';
    /*
    ====================
    Index

    Hay dos rutas en esta funcion.
        1ra.- Llamada a busqueda avanzada
        2da.- Cargar todos los Usuarios
    Si el 3er segmento del uri es busqAvanzada, significa que esta funcion fue llamada
    con esta intencion; por lo tanto realiza la busqueda especificada y carga el resultado.
    En el caso que no sea busqAvanzada carga todos los registros de Usuarios.
    Establece la configuracion de paginacion dependiendo de cual de las 2 rutas tome.
    ====================
    */
    function Index()
    {
        $datos['contenido'] = 'Usuarios_View';
        $datos['titulo']    = self::TITULO;
        $tarea = $this->uri->segment(3); //Recibe parametro en caso de busqueda avanzada
        if ( $tarea == "busqAvanzada" ) {
            $tipo   = $this->input->post('tipoBusqueda');
            $texto  = $this->input->post('filtro');
            if ( isset($tipo) && isset($texto) ) {
                switch ($tipo) {
                    case 'matricula':
                        $datos['registros'] = $this->Usuarios_Model->BuscarPorMatricula($texto);
                        break;
                    case 'usuario':
                        $datos['registros'] = $this->Usuarios_Model->BuscarPorUsuario($texto);
                        break;
                    default:
                        break;
                }
                //Config Paginacion
                $config['total_rows']    = COUNT($datos['registros']);
                $config['base_url']      = site_url("Usuarios/Index");
                $config['per_page']      = 10;
                $config['num_links']     = 5;
                $this->pagination->initialize( $config );
                $this->load->view( '/includes/template' , $datos );
            }
        }else{
            $datos['registros'] = $this->Usuarios_Model->ObtenerTodos();
            //Config Paginacion
            $config['total_rows']    = $this->Usuarios_Model->ContarRegistros();
            $config['base_url']      = site_url("Usuarios/Index");
            $config['per_page']      = 10;
            $config['num_links']     = 5;
            $this->pagination->initialize( $config );
            $this->load->view( '/includes/template' , $datos );
        }
    }

    /*
    ====================
    AgregarUsuario

    Captura los valores introducidos en el formulario, y forma un arreglo con los valores.
    Este se manda a guardar, se establece un aviso al usuario dependiendo de la respuesta.
    (Exito / Error)
    ====================
    */
    function AgregarUsuario()
    {
        $contrasena  = $this->input->post('contrasena');
        $contrasena2 = $this->input->post('contrasena2');
        if ($contrasena == $contrasena2) {
            $datosUsuarios = array(
                    'usuario'       => $this->input->post('usuario'),
                    'contrasena'    => MD5($contrasena)
                    );
            $exitoso = $this->Usuarios_Model->AgregarRegistrosUsuarios($datosUsuarios);
            if ( $exitoso ) {
                $this->session->set_flashdata('aviso','TRUE');
                $this->session->set_flashdata('avisoText','El registro se ha guardado.');
            }else{
                $this->session->set_flashdata('aviso','FALSE');
                $this->session->set_flashdata('avisoText','El registro fallo al guardarse, favor de intentar de nuevo');
            }
        } else {
            $this->session->set_flashdata('aviso','FALSE');
            $this->session->set_flashdata('avisoText','Contrasenas no coinciden');
        }
        redirect('Usuarios');
    }

    /*
    ====================
    ActualizarUsuario

    Toma los 2 parametros nesesarios, verfica que contengan algun valor,
    convierte el nombre de Usuario a mayusculas y manda a actualizar.
    Establece una aviso, si es exitoso.
    ====================
    */
    function ActualizarUsuario()
    {
        $usuario       = $this->input->post('usuario');
        $contrasena    = $this->input->post('contrasena');
        if ( isset($usuario) && $contrasena != "") {
            $exitoso = $this->Usuarios_Model->ActualizarRegistroUsuario($usuario , MD5($contrasena));
            if ( $exitoso ) {
                $this->session->set_flashdata('aviso', 'TRUE');
                $this->session->set_flashdata('avisoText', 'Registro actualizado');
            } else {
                $this->session->set_flashdata('aviso', 'FALSE');
                $this->session->set_flashdata('avisoText', 'Fallo al actualizar el registro');
            }
        } else {
            $this->session->set_flashdata('aviso', 'FALSE');
            $this->session->set_flashdata('avisoText', 'Ningun campo debe estar vacio.');
        }
            redirect('Usuarios');
    }

    /*
    ====================
    EliminarUsuario

    Toma el tercer segmento del uri, debido a que la imagen direcciona y manda la matricula por GET.
    Ejemplo http://example.com/index.php/primer/segundo/tercer/
    Con la matricula como identificador, manda el registro ese a eliminar de la BD.
    ====================
    */
    function EliminarUsuario()
    {
        $usuario = $this->uri->segment(3);
        $res = $this->Usuarios_Model->EliminarRegistro($usuario);
        if( $res == 1 ){
            $this->session->set_flashdata('aviso', 'TRUE');
            $this->session->set_flashdata('avisoText', 'Registro Eliminado.');
        }else{
            $this->session->set_flashdata('aviso', 'FALSE');
            $this->session->set_flashdata('avisoText', 'Es posible que el registro ya no exista.');
        }
        redirect('Usuarios');
    }
}
 ?>